#include<iostream>
#include<vector>
using namespace std;

//获取最小的没有出现过的整数
//假设数组长度为n，那么有一种极端情况就是这n个空间
//正好存储1-n这n个数字，此时n+1即为没有出现的最小正整数
//否则，只要存储的不是1-n这n个数字，那么在区间我1-n中必有一个不在arr里面
//此时这个不在的数，就是最小没有出现的
int min_not_appear(vector<int> arr){
    vector<int> ans(arr.size()+1,0);
    for(auto var : arr){
        if(var>=1&&var<=arr.size()){
            ans[var]=1;
        }
    }
    for(int i=1;i<=ans.size();i++){
        if(ans[i]==0){
            return i;
        }
    }
    return arr.size()+1;
}

int main(void){
    vector<int> test={-5,3,2,3};
    vector<int> test2={1,2,3};
    cout<<min_not_appear(test2);
    return 0;
}